/**
 * 删除所有值为x的元素
 * 时间复杂度O(n)
 * 空间复杂度O(1)
 * 算法思想:用k记录L中不等于x的元素的个数，扫描时，将不等于x的元素移动到下标
 * 为k的位置，更新k的值，扫描结束后，更新L的长度字段
 * 
 * 对于{1,2,3,2,4}，删除2
 * k=0 i=0
 * i=0 k=0 [0]=1 因为不相等，所以先赋值 array[0]=array[0]  k加一得 k=1
 * k=1 i=1
 * [1]=2 相等，则k不动
 * k=1 i=2
 * [2]=3 array[1]=array[3] k+1 得 k=2
 */
#include<stdbool.h>

typedef int ElementType;

#define MAX_LENGTH 100
typedef struct{
    ElementType data[MAX_LENGTH];
    int size;
} SqList;

void removeX(SqList* l,int x){
    int k=0,i;
    for(i=0;i<l->size;i++){
        if(l->data[i]!=x){
            l->data[k]=l->data[i];
            k++;
        }
    }
    l->size=k;
}
//或者k记录相等的个数也是可以的
//还可以用两个指针，同时从左右遍历